package com.ruoyi.capsule.utils;

import java.util.Calendar;
import java.util.Date;
import java.util.TimeZone;

public class DateToCronConverter {



    public static String convertDateToCron(Date date) {

        if (date == null) {

            throw new IllegalArgumentException("Input date cannot be null");

        }

        Calendar dateCalendar = Calendar.getInstance();

        dateCalendar.setTime(date);

// 提取传入日期的年、月、日

        int year = dateCalendar.get(Calendar.YEAR);

        int month = dateCalendar.get(Calendar.MONTH) + 1; // 月份从0开始，需加1

        int day = dateCalendar.get(Calendar.DAY_OF_MONTH);

// 获取当前时间的时、分、秒

        Calendar nowCalendar = Calendar.getInstance();

        nowCalendar.setTime(new Date());

        int hour = nowCalendar.get(Calendar.HOUR_OF_DAY);

        int minute = nowCalendar.get(Calendar.MINUTE);

        int second = nowCalendar.get(Calendar.SECOND);

// 构建Cron表达式，格式：秒 分 时 日 月 周 年

        return String.format("%d %d %d %d %d ? %d", second, minute, hour, day, month, year);

    }
    /**
     * 将 Date 类型的时间转换为 Cron 表达式（仅包含年、月、日）
     * @param date 要转换的 Date 对象
     * @return 对应的 Cron 表达式
     */
//    public static String convertDateToCron(Date date) {//默认0点提示
//        if (date == null) {
//            throw new IllegalArgumentException("Input date cannot be null");
//        }
//
//        Calendar calendar = Calendar.getInstance(TimeZone.getTimeZone("UTC"));这个utc要删掉 这是美国时区
//        calendar.setTime(date);
//
//        // 提取日、月、年信息
//        int dayOfMonth = calendar.get(Calendar.DAY_OF_MONTH);
//        int month = calendar.get(Calendar.MONTH) + 1; // 月份从 0 开始，需要加 1
//        int year = calendar.get(Calendar.YEAR);
//
//        // 构建 Cron 表达式（仅包含年、月、日）
//        return String.format("1/10 * * * * ?");
////        return String.format("0 0 0 %d %d ? %d", dayOfMonth, month, year);
//    }

//    public static void main(String[] args) {
//        // 示例 Date 对象
//        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
//        try {
//            Date unlockTime = sdf.parse("2025-05-10 12:30:00");
//            String cronExpression = convertDateToCron(unlockTime);
//            System.out.println("转换后的 Cron 表达式: " + cronExpression);
//        } catch (Exception e) {
//            e.printStackTrace();
//        }
//    }
}
